// Options 解析
var program = require('commander');

program
  .option('-g, --git <>', 'Add [marble]', 'Angie')  // <>  是必填
  .option('-a, --all []', 'Add [all value]', 'haha') // [] 是选填，不填则是默认值
  .option('-s, --no-yes', 'Boolean false') // no-  的默认是为false，否则为true
  .parse(process.argv);

console.log("所有输入参数 process.argv : ",process.argv)
console.log("未分配的参数 program.args : ",program.args)
if (program.git){
    console.log('git : ', program.git);
}
if (program.all){
    console.log('all : ', program.all);
} 
console.log('yes : ', program.yes);



/* 

上面的示例将解析来自process.argv的args和options，
然后将剩下的参数（未定义的参数）赋值给commander对象的args属性(program.args)，program.args是一个数组。

打印输出一下process.argv和program.args并查看了一下输出结果如下，使用如下命令运行一下文件：



node demo1 -g istype huatian mayuanzheng -a isall --no-yes





所有输入参数 process.argv :  [ '/usr/local/bin/node',
  '/Users/admin/Desktop/cli/test-cli/demo1',
  '-g',
  'istype',
  'huatian',
  'mayuanzheng',
  '-a',
  'isall' ]
未分配的参数 program.args :  [ 'huatian', 'mayuanzheng' ]
git :  istype
all :  isall
yes :  false






option方法可以接收三个参数：

自定义标志  必须：分为长短标识，中间用逗号、竖线或者空格分割；标志后面可跟必须参数或可选参数，前者用<>包含，后者用[]包含。
选项描述    省略不报错：在使用 --help 命令时显示标志描述
默认值      可省略：当没有传入参数时则会使用默认值 , 
                  (如果无输入参数，默认值 false、undefined 为 true)

*/